import { sveltekit } from '@sveltejs/kit/vite';
import UnoCSS from '@unocss/svelte-scoped/vite';
import { defineConfig } from 'vitest/config';
// import path from 'path';

export default defineConfig({
	plugins: [
		UnoCSS({
			// injectReset: '@unocss/reset/normalize.css', // see type definition for all included reset options or how to pass in your own
			// ...other Svelte Scoped options
		}),
		sveltekit()
	],
	test: {
		include: ['src/**/*.{test,spec}.{js,ts}']
	},
	// resolve: {
	// 	alias: [
	// 		{
	// 			find: '@',
	// 			replacement: path.resolve(__dirname, './src')
	// 		}
	// 	]
	// },
	server: {
		host: '0.0.0.0',
		port: 3000,
		open: true,
		proxy: {
			'^/api': {
				target: 'https://test.macnninc.com',
				// target: 'http://127.0.0.1:7001',
				changeOrigin: true,
				secure: false,
				rewrite: (path) => path.replace(/^\/api/, '/api/frontend')
			},
			'^/upload': {
				// target: 'http://127.0.0.1:7001/upload',
				changeOrigin: true,
				rewrite: (path) => path.replace(new RegExp(`^/upload`), '')
			}
		},
		// 提前转换和缓存文件以进行预热。可以在服务器启动时提高初始页面加载速度，并防止转换瀑布。
		warmup: {
			// 请注意，只应该预热频繁使用的文件，以免在启动时过载 Vite 开发服务器
			// 可以通过运行 npx vite --debug transform 并检查日志来找到频繁使用的文件
			clientFiles: ['./src/app.html', './src/{components,api}/*']
		}
	},
	build: {
		rollupOptions: {
			output: {
				// preserveModules: true // 保留模块结构 （默认为 false）
				manualChunks(id) {
					// 这里可以使用 id（模块的绝对路径）来判断如何分块
					if (id.includes('node_modules')) {
						return 'vendor'; // 将所有 node_modules 中的包打包到一个叫 vendor 的 chunk 中
					}
					if (id.includes('src/components/basic')) {
						return 'basic'; // 将 src/components 中的模块打包到一个叫 components 的 chunk 中
					}
					if (id.includes('src/components/business')) {
						return 'business'; // 将 src/components 中的模块打包到一个叫 components 的 chunk 中
					}
				}
			}
			// onwarn(warning, rollupWarn) {
			// 	console.log('\x1b[35m' + 'Tip：' + warning.code + '; ' + warning.message + '\x1b[0m');
			// 	// 忽略特定的警告
			// 	if (warning.code && warning.code.startsWith('a11y-')) return;
			// 	// 对于其他警告，正常输出
			// 	rollupWarn(warning);
			// }
		}
	}
});
